/***************************************************************************
 *   Copyright (C) 2008 by beltegeuse   *
 *   beltegeuse@kubuntu-acer   *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/
#ifndef BDLIVRE_H
#define BDLIVRE_H

//Include QT
#include <QtCore/QList>
#include <QtCore/QObject>
#include <QtCore/QDate>

//Includes internal typedef
#include "BdTypeDef.h"
#include "BdEditeur.h"
class QString;
class BdAuteur;
//class BdEditeur;
/**
Class pour representer les livres
*/

class BdLivre
{

public:
  //Constructors
  /**
  Constructeur pour creer un livre
  */
  BdLivre();
  
   /**
  Constructeur pour creer un livre
  @param id id du livre
  @param nom nom du livre
  @param date date de parution du livre
  @param auteurs auteurs du livre
  @param editeur editeur du livre
  */
  BdLivre(int id, QString nom, QDate date, BdAuteurMap auteurs, BdEditeur editeur);
  //Destructors
  /**
  Destructeur
  */
  ~BdLivre();
  
  //Asseceurs

  // * Titre
  /**
  @return titre du livre
  */
  QString titre();
  
  /**
  Pour changer le titre du livre
  @param titre nouveau titre
  */
  void setTitre(QString titre);

  // * Auteurs
  /**
  Pour ajouter un auteur au livre
  @param auteur nouvel auteur
  */
  void addAuteur(BdAuteur* auteur);
  
  /**
  Pour supprimer un auteur au livre
  @param auteur auteur a supprimer
  */
  void removeAuteur(BdAuteur* auteur);
  
  /**
  @return map des auteurs
  */
  const BdAuteurMap& auteurs();

  // * Editeur
  /**
  @return editeur du livre
  */
  const BdEditeur& editeur();
  
  /**
  Pour changer l'editeur du livre
  @param editeur nouvel editeur
  */
  void setEditeur(BdEditeur editeur);

  // * Id
  /**
  @return id du livre
  */
  int id();
  
  /**
  Pour changer l'id du livre
  @param id nouvel id
  */
  void setLivreId(int id);

private:
  /**
  id du livre
  */
  int mId;
  
  /**
  titre du livre
  */
  QString mTitre;
  
  /**
  date de parution du livre
  */
  QDate mDate;
  
  /**
  editeur du livre
  */
  BdEditeur mEditeur;
  
  /**
  auteurs du livre
  */
  BdAuteurMap mAuteurs;
};

#endif
